package com.qixin.util.string;

import org.apache.commons.lang3.StringUtils;

import java.util.Random;

/**
 * 
 * @author 张子艺
 * @date 2017年1月18日 上午11:46:29
 * @version 1.0
 * @description 字符串创造工具
 *
 */
public class StringCreateUtil {
	/**
	 * 
	 * @author 张子艺
	 * @date 2017年1月18日 上午11:51:00
	 * @version 1.0
	 * @description 获取固定长度的随机字符串，随机字段串包括所有的小写字母和数字
	 *
	 * @param length
	 * @return
	 */
	public static String getRandomString(int length) {
		String base = "abcdefghijklmnopqrstuvwxyz0123456789";
		Random random = new Random();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; i++) {
			int number = random.nextInt(base.length());
			sb.append(base.charAt(number));
		}
		return sb.toString();
	}
	
	/**
	 * 
	 * @author 张子艺
	 * @date 2017年1月24日 上午11:31:04
	 * @version 1.0
	 * @description 获取固定长度的随机字符串，随机字段串包括所有的数字
	 *
	 * @param length
	 * @return
	 */
	public static String getRandomNumString(int length) {
		String base = "0123456789";
		Random random = new Random();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < length; i++) {
			int number = random.nextInt(base.length());
			sb.append(base.charAt(number));
		}
		return sb.toString();
	}
	
	/**
	 * 
	 * @author 张子艺
	 * @date 2017年3月16日 下午3:08:06
	 * @version 1.0
	 * @description 获取带有前缀和后缀的字符串
	 *
	 * @param prefix	前缀
	 * @param middleLength	中间生成随机字符串的位数
	 * @param suffix	后缀
	 * @return
	 */
	public static String getRandomString(String prefix,int middleLength,String suffix){
		StringBuffer sb=new StringBuffer();
		if(prefix==null){
			prefix="";
		}
		if(suffix==null){
			suffix="";
		}
		sb.append(prefix).append(getRandomString(middleLength)).append(suffix);
		return sb.toString();
	}
	
	/**
	 * 
	 * @author 张子艺
	 * @date 2017年3月16日 下午3:09:01
	 * @version 1.0
	 * @description 将一个字符串转化为定长的字符串
	 *
	 * @param str	原始字符串
	 * @param prefixChar	用于填补字符串前缀不够长度的部分，传递一个字符的字符串
	 * 如果传递了长度大于一的prefixChar，那么会用prefixChar的第一个字符进行填充
	 * @param length	生成字符串的总长度，如果总长度小于原始字符串的长度，则会返回原始字符串
	 * @return
	 */
	public static String getFixedLengthStr(String str,String prefixChar,int length){
		if(str==null){
			return null;
		}
		if(StringUtils.isBlank(prefixChar)){
			return str;
		}
		if(str.length()>=length){
			return str;
		}
		if(prefixChar.length()>1){
			prefixChar=prefixChar.substring(0, 1);
		}
		int prefixCharLength=length-str.length();
		StringBuffer resultStr=new StringBuffer();
		for (int i = 0; i < prefixCharLength; i++) {
			resultStr.append(prefixChar);
		}
		return resultStr.append(str).toString();
	}
	
}
